﻿using DataType;
using DataType.Actions;
using DataType.CustomEnumType;
using DataType.JudgeResults;
using DataType.MessageType;
using MapCalclator;
using System.Collections.Generic;
using System.Xml.Linq;

namespace OprsSimulator.Operators
{
    public interface IOperator
    {
        int ObjID { get; }
        string Name { get; }
        void SetUp(OperatorMsg operatorMsg);
        /// <summary>
        /// 传入裁决结果，更新算子的独立属性
        /// </summary>
        void UpdataStandaloneAttris(List<IJudgeResult> judge_results, Map map);

        /// <summary>
        /// 传入最新态势（其它算子信息），更新算子的关联属性
        /// </summary>
        void UpdateAssociatedAttris(List<IOperator> oprs, List<IOperator> passengers, Map map);

        Dictionary<int, List<ActionMsg>> ConfirmValidActions(List<OperatorMsg> oprs, CityMsg[] cities, Map map, ShootJudgeTable shootJudgeTable, List<IOperator> passengers);
    }
}
